"""
__new__

__init__(),初始化的方法
    当创建对象的时候，自动调用。
        通常使用该方法，用于初始化对象的实例变量

__del__(),销毁对象前，自动调用

    生命周期：从创建，到销毁的过程。
        局部变量的生命周期
        对象的生命周期：
            创建：p1 = Person(),创建对象
            销毁：垃圾自动回收：GC(Garbage Collect)

__str__(),打印对象的时候，其实是打印，自动调用str方法的返回值
    要去str的返回值，是字符串
    默认的str()-->返回的是对象的地址
    类中程序员自己添加：str(),返回该对象的各个属性值。

        对比：str(),show_info()
            1.str是python的类中内置的方法，show_info是自己添加的
            2.str必须返回一个字符串show_info没有返回值，用于打印信息
            3.str是自动调用(print(对象))，show_info手动调用
"""


class People:
    # 对象创建时候调用
    def __new__(cls, *args, **kwargs):
        print(' __new__--------')
        return super().__new__(cls, *args, **kwargs)  # 让它走系统默认的方法
        # return None

    # 对象初始化的时候调用
    def __init__(self, ):
        print('----init-----')
        self.name = 'zhangsan'

    # 对象删除的时候调用
    def __del__(self):
        print('---------del------')

    # print 的时候调用
    def __str__(self):
        print('------str---------')
        return 'self.name:' + self.name

    # 自己手动调用
    def run(self):
        print('---------run-------------')


p1 = People()

print(p1)
# p1.run()

a = p1
b = p1

del a
print(b)

